import Vue from 'vue'
import Vuex from 'vuex'
import axios from '../lib/axios'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    /** 配置 */
    config: {
      // 基本速度
      speed: 0,
    },
    user: {},
    setting: {
      // 显示二维码
      qrcode_show: false,
      // 弹幕功能开关
      barrage: true,
      // 对齐
      align: true,
    },
    system: {

    }
  },
  getters: {
  },
  mutations: {
    /** 切换二维码显示状态 */
    switchQrcodeState(state) {
      state.setting.qrcode_show = !state.setting.qrcode_show
    },
    /** 切换弹幕开关 */
    switechBarrageState(state) {
      state.setting.barrage = !state.setting.barrage
    },
    /** 切换对齐状态 */
    switechAlignState(state) {
      state.setting.align = !state.setting.align
    },
    /** 加速相对于减少动画时间 */
    addspeed(state) {
      state.config.speed = Math.max(state.config.speed - 1, -10);
    },
    /** 减速相对于增加动画时间 */
    subspeed(state) {
      state.config.speed = Math.min(state.config.speed + 1, 40);
    },
    /** 初始化服务配置 */
    initsystem(state, data) {
      state.system = data;
    },
    /** 初始化用户仓库 */
    initstore(state, data) {
      state.user = data;
    }
  },
  actions: {
    async initsystem({ commit }) {
      await axios.get('/system').then(res => {
        commit('initsystem', res.data)
      })
    },
    async initstore({ commit, state }, userId) {
      await axios.get('/store', { params: { openId: userId || state.user.openid } }).then(res => {
        commit('initstore', res.data)
      })
    }
  },
  modules: {
  }
})
